import Vue from 'vue'
import App from './App.vue'
import router from './router'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import axios from 'axios'
import moment from 'moment'
import VueQuillEditor from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
Vue.use(ElementUI)
Vue.use(VueQuillEditor)
Vue.config.productionTip = false
// --------优化(1)(2)(3)----------------------------------
// (1)将这个方法挂载到vue原型上 所有的vue组件都可以复用vue实例
// ajax =>this.$axios
Vue.prototype.$axios = axios
// (2) 配置axios全局基准地址,将来使用时,会自动拼接这个基准地址
axios.defaults.baseURL = 'http://localhost:8888/api/private/v1/'

// console.log(axios.defaults.baseURL)
// 在后面使用
// this.$axios.defaults.baseURL

// 在请求或响应被 then 或 catch 处理前拦截它们。
// (3) 添加请求拦截器
axios.interceptors.request.use(function (config) {
  // 在发送请求之前统一配置token令牌
  config.headers.Authorization = localStorage.getItem('token')
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})
// 添加响应拦截器
axios.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  response = response.data
  // 如果响应回来status=401 说明是无效token 则拦截到登录页
  if (response.meta.status === 401) {
    router.push('/login')
  }
  return response
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error)
})
// 全局过滤器 处理日期
Vue.filter('time', function (value) {
  return moment(value * 1000).format('YYYY-MM-DD HH:mm:ss')
})
// ---------
new Vue({
  router,
  render: h => h(App)
}).$mount('#app')
